using System;
using System.Collections.Generic;

namespace Domain.DTOs.RBAC
{
    /// <summary>
    /// 权限数据传输对象
    /// 原DTO名: PermissionDTO（字段命名已规范化）
    /// </summary>
    public class PermissionDTO
    {
        /// <summary>
        /// 权限ID（主键）
        /// 原字段名: Id
        /// </summary>
        public long Id { set; get; }

        /// <summary>
        /// 权限编号（业务唯一标识）
        /// 原字段名: Permissioncode
        /// 修改后字段名: PermissionCode
        /// </summary>
        public string PermissionCode { get; set; }

        /// <summary>
        /// 权限名称
        /// 原字段名: Permissionname
        /// 修改后字段名: PermissionName
        /// </summary>
        public string PermissionName { get; set; }

        /// <summary>
        /// 权限路径/路由地址
        /// 原字段名: Permissionurl
        /// 修改后字段名: PermissionUrl
        /// </summary>
        public string? PermissionUrl { get; set; }

        /// <summary>
        /// 父级权限ID（0 表示顶级权限）
        /// 原字段名: Parentid
        /// 修改后字段名: ParentId
        /// </summary>
        public long ParentId { get; set; }

        /// <summary>
        /// 父级权限名称
        /// 新增字段：便于前端显示
        /// </summary>
        public string? ParentName { get; set; }

        /// <summary>
        /// 权限类型（1-目录，2-菜单，3-按钮，4-API）
        /// 新增字段
        /// </summary>
        public int PermissionType { get; set; }

        /// <summary>
        /// 权限类型文本
        /// 新增字段：便于前端显示
        /// </summary>
        public string? PermissionTypeText { get; set; }

        /// <summary>
        /// 权限图标
        /// 新增字段
        /// </summary>
        public string? Icon { get; set; }

        /// <summary>
        /// 排序号
        /// 新增字段
        /// </summary>
        public int Sort { get; set; }

        /// <summary>
        /// 权限状态（1-启用，0-禁用）
        /// 新增字段
        /// </summary>
        public int Status { get; set; }

        /// <summary>
        /// 权限状态文本
        /// 新增字段：便于前端显示
        /// </summary>
        public string? StatusText { get; set; }

        /// <summary>
        /// 权限描述
        /// 新增字段
        /// </summary>
        public string? Description { get; set; }

        /// <summary>
        /// 备注信息
        /// 新增字段
        /// </summary>
        public string? Remark { get; set; }

        /// <summary>
        /// 子权限集合（递归树形结构）
        /// 原有字段：保持不变
        /// </summary>
        public List<PermissionDTO>? Children { set; get; } = new();
    }
}

